001    /**
002     * Created by IntelliJ IDEA.
003     * User: Wei Wang
004     * Date: Mar 11, 2003
005     * Time: 7:25:53 PM
006     */
007    
008    package EVolve.visualization.XYViz.ValValViz;
009    
010    import EVolve.data.Element;
011    import EVolve.data.DataFilter;
012    import EVolve.data.Entity;
013    import EVolve.util.painters.*;
014    import EVolve.util.painters.shapes.Line;
015    import EVolve.visualization.AutoShapeImage;
016    import EVolve.visualization.Dimension;
017    import EVolve.visualization.ReferenceDimension;
018    import EVolve.visualization.ValueDimension;
019    import EVolve.Scene;
020    import javax.swing.*;
021    import java.awt.*;
022    import java.util.HashMap;
023    
024    public class ContinousMetric extends ValueValueVisualization{
025        private JTextField textInterval;
026        private int triggerDimension;
027        private int selectedTrigger = 0;
028    
029    
030        public ContinousMetric() {
031    
032        }
033    
034        public Dimension[] createDimension() {
035            Dimension[] returnVal = new Dimension[3];
036    
037            xAxis = new ValueDimension();
038            yAxis = new ValueDimension();
039            entityIdFilter = new ReferenceDimension();
040    
041            returnVal[0] = xAxis;
042            returnVal[1] = yAxis;
043            returnVal[2] = entityIdFilter; // trigger filter
044    
045            triggerDimension = returnVal.length - 1;
046    
047            return returnVal;
048        }
049    
050        public JMenuItem[] createSelectionMenuItem() {
051            return null;
052        }
053    
054        protected JPanel createConfigurationPanel() {
055            JPanel configurationPanel = new JPanel(new FlowLayout());
056            configurationPanel.add(new JLabel("Interval: "));
057    
058            textInterval = new JTextField(String.valueOf(interval), 10);
059            configurationPanel.add(textInterval);
060    
061            return configurationPanel;
062        }
063    
064        public void preVisualize() {
065        }
066    
067        public void receiveElement(Element element) {
068            if (element.isOptional()) return;
069    
070            long mappedTriggerId = entityIdFilter.getField(element);
071            long triggerId = entityIdFilter.getEntityFromInt((int)mappedTriggerId).getId();
072    
073            if ( (int)triggerId != selectedTrigger) return;
074    
075            // do paint things here
076    
077        }
078    
079        public void visualize() {
080            sort();
081        }
082    
083        protected void installPainter() {
084            painter = new AllocDensityMetricPainter();
085        }
086    
087        public void mouseMove(int x, int y) {
088        }
089    
090        public void makeSelection() {
091    
092        }
093    
094        protected void updateComboDimension() {
095            for (int i = 0; i < triggerDimension; i++) {
096                if (comboDimension[i].getSelectedIndex() != -1) {
097                    comboDimension[i].setToolTipText(dataFilter[comboSubject.getSelectedIndex()][i][comboDimension[i].getSelectedIndex()].getDescription());
098                }
099            }
100    
101            selectedTrigger = comboDimension[triggerDimension].getSelectedIndex();
102    
103            // according to dimension definition in VizFactory, we get the data filter manually
104            // and then set it to the entityIdFilter(trigger filter)
105            DataFilter dataFilter = Scene.getDataManager().getDataFilter(subjectDefinition,definition.getDimensionDefinition()[triggerDimension].getProperty())[0];
106            entityIdFilter.setDataFilter(dataFilter);
107    
108            // now, with the data filter we can get all trigger name from the entity set which we built during
109            // loading data trace. With these names, we can set the combo box manually
110            comboDimension[triggerDimension].removeAllItems();
111            HashMap triggerEntities = Scene.getDataManager().getEntity()[dataFilter.getTargetType()];
112    
113            //here I assume triggers have continuous Id starting from 0, otherwize you have to change this
114            for (int i=0; i<triggerEntities.size(); i++) {
115                comboDimension[triggerDimension].addItem(((Entity)triggerEntities.get(new Long(i))).getName());
116            }
117            comboDimension[triggerDimension].setSelectedIndex(selectedTrigger);
118        }
119    }